//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main()
//{
//    int n = 0;
//    vector<int> v;
//    vector<int> s;
//    long long sum = 0;
//    long long suma = 0;
//
//    cin >> n;
//    v.resize(n), s.resize(n);
//    for (int i = 0; i < n; ++i)
//    {
//        cin >> v[i];
//        sum += v[i];
//    }
//    for (int i = 0; i < n; ++i)
//    {
//        suma += v[i];
//        s[i] = sum - suma;
//    }
//
//    sum = 0;
//    for (int i = 0; i < n; ++i)
//    {
//        sum += v[i] * s[i];
//    }
//
//    cout << sum << endl;
//
//    return 0;
//}

#include <iostream>
#include <string>
using namespace std;

const int mon[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

bool isLeapYear(int year)
{
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

bool isValidDate(int year, int month, int day)
{
    if (month < 1 || month > 12)
        return false;

    if (month == 2)
    {
        if (isLeapYear(year))
            return day >= 1 && day <= mon[month] + 1;
        else
            return day >= 1 && day <= mon[month];
    }

    return day >= 1 && day <= mon[month];
}

bool isPalindrome(int num)
{
    string s = to_string(num);
    int sz = s.size();

    for (int i = 0; i < sz; ++i)
    {
        if (s[i] != s[sz - 1 - i])
            return false;
    }
    return true;
}

bool isAB(int num)
{
    string s = to_string(num);

    if (s[0] != s[1] && s[0] == s[2] && s[1] == s[3])
        return true;
    return false;
}

int main()
{
    int beg = 0;
    int a = 0, b = 0;
    cin >> beg;
    //beg = 20211201;

    int flag = 1;
    for (int i = beg + 1; !(a && b); ++i)
    {
        if (isValidDate(i / 10000, (i % 10000) / 100, i % 100) && isPalindrome(i))
        {
            if (flag)
            {
                a = i;
                flag = 0;
            }
            if (isAB(i))
                b = i;
        }
    }
    cout << a << endl;
    cout << b << endl;

    return 0;
}